Вот чего я хочу, смотрите рисунок. Это посказка к кнопке в диалоговом окне. Называется это ToolTips:

Итак создаем приложение как MFC AppWizard на основе диалогового окна с именем TestTip. Помещаем на него три кнопки. Используя ClassWizard создаем соответствующий кнопкам класс типа Control. Вот так:
class CTestTipDlg : public CDialog
{
......
// Dialog Data
//{{AFX_DATA(CTestTipDlg)
enum { IDD = IDD_TESTTIP_DIALOG };
CButton m_B3;
CButton m_B2;
CButton m_B1;
//}}AFX_DATA
......
};
Теперь нам надо создать указатель на класс подсказки как CToolTipCtrl:
class CTestTipDlg : public CDialog
{
// Construction
public:
CToolTipCtrl* m_pTips;
......
};
В конструкторе класса диалога обнулим указатель. Для надежности :-)
CTestTipDlg::CTestTipDlg(CWnd* pParent /*=NULL*/)
: CDialog(CTestTipDlg::IDD, pParent)
{
.......
m_pTips=NULL;
}
Создадим деструктор для того, чтобы при разрушении класса освободить память.
class CTestTipDlg : public CDialog
{
......
CTestTipDlg(CWnd* pParent = NULL); // standard constructor
~CTestTipDlg();
......
};
CTestTipDlg::~CTestTipDlg()
{
if (m_pTips!=NULL) delete m_pTips;
}
}
Теперь нам надо создать сам класс подсказки и связать подсказку с элементами на диалоговом окне. Мы это сделаем в OnInitDialog().
BOOL CTestTipDlg::OnInitDialog()
{
...........
if (!m_pTips)
{
m_pTips =new CToolTipCtrl;
m_pTips->Create(this);
m_pTips->AddTool(&m_B1,"Button 1");
m_pTips->AddTool(&m_B2,"Button 2");
m_pTips->AddTool(&m_B3,"Button 3");
m_pTips->Activate(TRUE);
}
return TRUE; // return TRUE unless you set the focus to a control
}
Следующий шаг заключается в передаче сообщения классу подсказки:
BOOL CTestTipDlg::PreTranslateMessage(MSG* pMsg)
{
if (NULL != m_pTips)
m_pTips->RelayEvent(pMsg);
return CDialog::PreTranslateMessage(pMsg);
}
Ну вот и все. Запускайте и наслаждайтесь подсказками, что мол эта кнопка номер один, а эта номер два.